package com.hd.util;

import java.math.BigDecimal;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class QuartzCronDateUtils {
	/*** 
     *  功能描述：日期转换cron表达式时间格式
     * @param date 
     * @param dateFormat : e.g:yyyy-MM-dd HH:mm:ss 
     * @return 
     */  
    public static String formatDateByPattern(Date date,String dateFormat){  
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);  
        String formatTimeStr = null;  
        if (date != null) {  
            formatTimeStr = sdf.format(date);  
        }  
        return formatTimeStr;  
    }  
    /*** 
     * convert Date to cron ,eg.  "14 01 17 22 07 ? 2017" 
     * @param date:时间点 
     * @return 
     */  
    public static String getCron(Date date){
        String dateFormat="ss mm HH dd MM ? yyyy";  
        return formatDateByPattern(date,dateFormat);  
    }  
    
    /**
     * 给方法是从字符串中提取类似
     * String s="id:Integer:1,name:String:123,time:TimeStamp:20180719203210";
     * 中的字符串转换为List
     * [1,"123",1532003530000]
     * @param params
     * @return
     */
	@SuppressWarnings("unchecked")
    public static ArrayList getScheduleParamArray(String params) {
    	ArrayList list=new ArrayList();
		String s=params;
		if(!s.trim().equals("")) {
			String[] s1=s.split(",");
			for(String s2:s1) {
				String s3[]=s2.split(":");
				if(s3[1].equals("String")) {
					list.add(s3[2]);
				}
				if(s3[1].equals("Integer")) {
					list.add(Integer.parseInt(s3[2]));
				}
				if(s3[1].equals("Long")) {
					list.add(Long.valueOf(s3[2]));
				}
				if(s3[1].equals("BigDecimal")) {
					list.add(new BigDecimal(s3[2]));
				}
				if(s3[1].equals("float")) {
					list.add(Float.parseFloat(s3[2]));
				}
				if(s3[1].equals("double")) {
					list.add(Double.parseDouble(s3[2]));
				}
				if(s3[1].equals("Date")) {
					System.out.println(s3[2]);
					SimpleDateFormat df=new SimpleDateFormat("yyyyMMddhhmmss");
					try {
						list.add(df.parse(s3[2]));
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				if(s3[1].equals("TimeStamp")) {
					SimpleDateFormat df=new SimpleDateFormat("yyyyMMddhhmmss");
					try {
						list.add(new Timestamp(df.parse(s3[2]).getTime()));
					} catch (ParseException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
		}
		return list;
    }
    
    public static void main(String[] args) {
		Date d=new Date();
		String s=getCron(d);
		System.out.println(s);
	}

}
